package com.zp.self.module.level_4_算法练习.数据结构.数组;

import org.junit.Test;

/**
 * @author By ZengPeng
 */
public class 力扣_747_至少是其他数字两倍的最大数 {
    @Test
    public void main() {

        System.out.println(dominantIndex(new int[]{1,5,3,6,4}));
    }

    /**
    题目：给你一个整数数组 nums ，其中总是存在 唯一的 一个最大整数 。
         请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是，则返回 最大元素的下标 ，否则返回 -1 。

     示例 1：
     输入：nums = [3,6,1,0]
     输出：1
     解释：6 是最大的整数，对于数组中的其他整数，6 至少是数组中其他元素的两倍。6 的下标是 1 ，所以返回 1 。

     示例 2：
     输入：nums = [1,2,3,4]
     输出：-1
     解释：4 没有超过 3 的两倍大，所以返回 -1 。

     示例 3：
     输入：nums = [1]
     输出：0
     解释：因为不存在其他数字，所以认为现有数字 1 至少是其他数字的两倍。

    分析：【P 💔】
       1.遍历：记录最大值，最大值下标，第二大的值
            --执行用时：0 ms, 在所有 Java 提交中击败了100.00%的用户
            --时长：10分钟

    边界值 & 注意点：
       1.[1,0]
     **/
    public int dominantIndex(int[] nums) {
        if(nums.length==1)return 0;
        int max=Math.max(nums[1],nums[0]),sMax =Math.min(nums[1],nums[0]),index=max==nums[0]?0:1;
        for (int i = 2; i < nums.length; i++) {
            if(nums[i]>max){
                sMax=max;
                max=nums[i];
                index=i;
            }else if(nums[i]>sMax){
                sMax=nums[i];
            }
        }
        return max<2*sMax ? -1:index;
    }
}
